<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //一.逻辑运算符
    //1.逻辑与 - and - &&
    //逻辑与运算符和符号两边的操作数有关系。
    //两边的操作数转换成布尔值，结果不一定是布尔值。
    //规则：目标是符号两边的操作数都要为真。
    //如果第一个操作数为真，结果一定是第二个操作数。
    //如果第一个操作数为假，结果就是第一个操作数，跳过第二个操作数(短路操作)
    //总结：逻辑与碰到操作数为假，结束了。
    // console.log(3 && 4); //4
    // console.log(4 && 0); //0
    // console.log(0 && 呵呵呵呵呵呵); //0  短路操作
    // console.log(0 && false); //0 短路操作
    // console.log('' && 0); //''

    // console.log('hello' && 100); //100
    // console.log('hello' && false); //false

    // console.log(2 && 3 && 0 && 4); //0
    // console.log(2 && 3 && 4 && 5); //5
    // console.log(false && 3 && 4 && 5); //false
    // console.log(true && undefined && null); //undefined


    //2.逻辑或 - or - ||
    //逻辑或运算符和符号两边的操作数有关系。
    //两边的操作数转换成布尔值，结果不一定是布尔值。
    //规则：目标是符号两边的操作数有一个为真即可。

    //如果第一个操作数为假，结果一定是第二个操作数。
    //如果第一个操作数为真，结果就是第一个操作数，跳过第二个操作数(短路操作)
    //总结：逻辑或碰到操作数为真，结束了。

    // console.log(1 || 2); //1
    // console.log(1 || 哈哈哈哈); //1
    // console.log(false || 1); //1
    // console.log(false || 0 || ''); //''


    //3.逻辑非 - not - ! - 取反
    //逻辑非的结果一定是布尔值。取代前面Boolean()
    //先将当前的值转换成布尔值，然后取反。
    // console.log(!3); //false
    // console.log(!!3); //true
    // console.log(!!!!!!!3); //false
    // console.log(!0); //true

    console.log(3 > 2 && 4 > 3); //console.log(true && true)
</script>